package com.example.a01;

import org.springframework.context.MessageSource;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.context.support.ResourceBundleMessageSource;

import java.util.Locale;

public class TestMessageSource {
    public static void main(String[] args) {
        GenericApplicationContext context = new GenericApplicationContext();

        // 向SpringBoot容器中注册一个名称为messageSource的MessageSource对象，
        // 该Bean是MessageSource类型的实例，用于管理应用程序的消息和国际化。
        context.registerBean("messageSource", MessageSource.class, () -> {
            ResourceBundleMessageSource ms = new ResourceBundleMessageSource();
            ms.setDefaultEncoding("utf-8");
            ms.setBasename("messages");
            return ms;
        });

        // 该函数用于刷新Spring应用上下文，重新加载所有的Bean实例，以及它们的依赖关系
        // 这在某些情况下非常有用，比如在热部署时，可以重新加载修改后的Bean定义，而不需要重新启动整个应用程序。
        context.refresh();

        System.out.println(context.getMessage("hi", null, Locale.ENGLISH));
        System.out.println(context.getMessage("hi", null, Locale.CHINESE));
        System.out.println(context.getMessage("hi", null, Locale.JAPANESE));
    }
}
